//
//  IMEncryptUtils.h
//  DualMediationSDK
//
//  Created by YeJary on 2025/6/23.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

/**
 * 加密解密工具类
 * 提供常用的加密解密功能
 */
@interface IMEncryptUtils : NSObject

/**
 * MD5加密
 * @param string 待加密字符串
 * @return MD5加密后的字符串
 */
+ (NSString *)md5:(NSString *)string;

/**
 * SHA1加密
 * @param string 待加密字符串
 * @return SHA1加密后的字符串
 */
+ (NSString *)sha1:(NSString *)string;

/**
 * SHA256加密
 * @param string 待加密字符串
 * @return SHA256加密后的字符串
 */
+ (NSString *)sha256:(NSString *)string;

/**
 * Base64编码
 * @param data 待编码数据
 * @return Base64编码后的字符串
 */
+ (NSString *)base64EncodeData:(NSData *)data;

/**
 * Base64编码字符串
 * @param string 待编码字符串
 * @return Base64编码后的字符串
 */
+ (NSString *)base64EncodeString:(NSString *)string;

/**
 * Base64解码
 * @param string Base64编码的字符串
 * @return 解码后的数据
 */
+ (nullable NSData *)base64DecodeString:(NSString *)string;

/**
 * AES加密
 * @param data 待加密数据
 * @param key 加密密钥
 * @return 加密后的数据
 */
+ (nullable NSData *)aesEncryptData:(NSData *)data withKey:(NSString *)key;

/**
 * AES解密
 * @param data 待解密数据
 * @param key 解密密钥
 * @return 解密后的数据
 */
+ (nullable NSData *)aesDecryptData:(NSData *)data withKey:(NSString *)key;


/// AES 加密
/// - Parameters:
///   - json:
///   - key:
///   - iv:
+ (NSString *)aesEncryptToBase64:(NSString *)json key:(NSString *)key iv:(NSString *)iv;

/// SHA256 加密
/// - Parameter input:
+ (NSString *)sha256ForString:(NSString *)input;

@end

NS_ASSUME_NONNULL_END 
